// 入口文件

// 启动服务的三个步骤
const express = require('express');
const app = express();
app.listen(3006, () => console.log('启动了'));

// 判断token是否正确；还要控制哪些接口需要认证，哪些接口不需要认证
const expressJWT = require('express-jwt');
app.use(expressJWT({
    secret: 'shhhhh', // 解密字符串，要和加密的secret一样
    algorithms: ['HS256']
}).unless({
    // 除了登录和注册的接口之外，其他接口都需要认证
    path: ['/api/login', '/api/reguser']
}));

// 入口文件中定义的中间件，就是应用级别的
// 加载登录注册的路由模块
let loginRouter = require('./0701.login');


// 配置一下，使用express提供的方法来接收客户端提交的查询字符串;并且把接收到的结果赋值给 req.body
app.use(express.urlencoded({ extended: false }));

// 注册成中间件
app.use('/api', loginRouter);
// 换一种注册的方法,可以省去上面的导入文件,节省代码量
app.use('/my/article', require('./0702.category'))
app.use('/my', require('./0703.user'))

// app.use(express.urlencoded());

// 错误处理中间件
app.use(function (err, req, res, next) {
  if (err.name === 'UnauthorizedError') {
      res.status(401).send({ status: 1, message: '身份认证失败！' });
  }
});